// 添加星号就是生成器函数
// function* foo() {
//   console.log('zs')
//   return 100
// }
// const result = foo()
// console.log(result.next())
// 无next Object [Generator] {}
// 有next zs / { value: 100, done: true }
// ---------------------------------------------------
// 配合yield关键词使用 调用next继续执行
// 生成器函数返回生成器对象 调用对象的next方法才会让函数体开始执行
// 一旦遇到yield函数的执行会被暂停下来
// yield后面的值会作为next的value返回
// 惰性执行 抽一下 动一下
function* foo() {
  console.log('1111')
  yield 100
  console.log('2222')
  yield 200
  console.log('3333')
  yield 300
}
const generator = foo()
console.log(generator.next())
console.log(generator.next())
console.log(generator.next())
console.log(generator.next())
console.log(generator.next())
// 1111
// { value: 100, done: false }
// 2222
// { value: 200, done: false }
// 3333
// { value: 300, done: false }
// { value: undefined, done: true }
// { value: undefined, done: true }
